/**
 * 存储数据
 * @param {*} key 本地缓存中指定的key
 * @param {*} value 需要缓存的数据
 */
export const setStorage = (key, value) => {
    try {
        wx.setStorageSync(key, value)
    } catch (error) {
        console.error(`存储指定 ${key} 数据发生了异常`, error)
    }
}

/**
 * 从本地读取指定key的数据
 * @param {*} key 本地缓存中指定的key
 */
export const getStorage = (key) => {
    try {
        const val = wx.getStorageSync(key)
        if (val) {
            return val
        }
    } catch (error) {
        console.error(`读取指定 ${key} 数据发生了异常`, error)
    }
}

/**
 * 从本地移除指定key的数据
 * @param {*} key 
 */
export const removeStorage = (key) => {
    try {
        wx.removeStorageSync(key)
    } catch (error) {
        console.error(`移除指定 ${key} 数据发生了异常`, error)
    }
}

/**
 * 从本地移除清空全部的数据
 */
export const clearStorage = () => {
    try {
        wx.clearStorage()
    } catch (error) {
        console.error(`清空本地数据发生了异常`, error)
    }
}

/**
 * 异步将数据存储到本地
 * @param {*} key 本地缓存中指定的key
 * @param {*} data 需要缓存的数据
 */
export const asyncSetStorage = (key, data) => {
    return new Promise((resolve) => {
        wx.setStorage({
            key,
            data,
            complete(res) {
                resolve(res)
            }
        })
    })
}

/**
 * 异步从本地读取指定key的数据
 * @param {*} key 本地缓存中指定的key
 */
export const asyncGetStorage = (key) => {
    return new Promise((resolve) => {
        wx.getStorage({
            key,
            complete(res) {
                resolve(res)
            }
        })
    })
}

/**
 * 异步从本地移除指定key的数据
 * @param {*} key 
 */
export const asyncRemoveStorage = (key) => {
    return new Promise((resolve) => {
        wx.removeStorage({
          key,
          complete(res) {
              resolve(res)
          }
        })
    })
}

/**
 * 异步从本地移除 清空全部的数据
 */
export const asyncClearStorage = () => {
    return new Promise((resolve) => {
        wx.clearStorage({
          complete(res) {
              resolve(res)
          }
        })
    })
}
